-----------------------------------------------------------------------
-- La vista cuboBalance tomaba los ccos1 y ccos2 solo del mov.       --
-- Ahora hace un coalesce con el comm si el del mov vale null (Edu)  --
-----------------------------------------------------------------------


CREATE OR REPLACE VIEW public.cubobalancenuevo AS 
 SELECT c.id AS idcomm,
    c.idpad,
    c.codambsuc,
    ambsuc.nombre AS nombreambsuc,
    c.fecha,
    (c.tipocom || '  -') || com.nombre AS tipocom,
    (((c.tipocom || ' ') || c.detalle) || ' ') || c.nro AS detallecomm,
    vmov.signo::numeric * vmov.impo AS impo,
    vmov.signo::numeric * vmov.cant AS cant,
    (vmov.tipomov || '  -') || vmov.nombredelmov AS discriminacion,
    vmov.rubroccos1,
    vmov.nombreccos1,
    vmov.rubroccos2,
    vmov.nombreccos2,
    r.idctb,
    r.codctb,
    r.nombrectb,
    r.nombrer1,
    r.nombrer2,
    r.nombrer3,
    r.nombrer4,
    r.nombrer5,
    r.nombrer6
   FROM comm c
     JOIN ( SELECT commov.idcomm,
            commov.tipomov,
            commov.signo,
            commov.idctb,
            commov.orden,
            commov.impo,
                CASE
                    WHEN commov.tipomov = 'ART' THEN art.nombre
                    WHEN commov.tipomov = 'CTE' THEN
                    CASE
                        WHEN ctem.idval IS NULL THEN pad.nombre
                        ELSE (((((pad.nombre || ', ') || val.tipovalt) || ' ') || valbto.nombre) || ' Nro. ') || val.nro
                    END
                    WHEN commov.tipomov = 'CON' THEN concep.nombre
                    WHEN commov.tipomov = 'CTB' THEN ctb.nombre
                    ELSE NULL
                END AS nombredelmov,
                CASE
                    WHEN commov.tipomov = 'ART' THEN artm.cant
                    ELSE NULL::numeric
                END AS cant,
            ctbcosr1.nombre AS rubroccos1,
            ctbcos1.nombre AS nombreccos1,
            ctbcosr2.nombre AS rubroccos2,
            ctbcos2.nombre AS nombreccos2
           FROM commov
             JOIN comm ON commov.idcomm = comm.id
             LEFT JOIN artm ON commov.tipomov = 'ART' AND commov.id = artm.id
             LEFT JOIN art ON commov.tipomov = 'ART' AND artm.idart = art.id
             LEFT JOIN ctem ON commov.tipomov = 'CTE' AND commov.id = ctem.id
             LEFT JOIN pad ON commov.tipomov = 'CTE' AND ctem.idpad = pad.id
             LEFT JOIN val ON commov.tipomov = 'CTE' AND ctem.idval = val.id
             LEFT JOIN valbto ON commov.tipomov = 'CTE' AND val.codvalbto = valbto.cod
             LEFT JOIN conm ON commov.tipomov = 'CON' AND commov.id = conm.id
             LEFT JOIN concep ON commov.tipomov = 'CON' AND conm.idcon = concep.id
             LEFT JOIN ctb ON commov.tipomov = 'CTB' AND commov.idctb = ctb.id
             LEFT JOIN ctbcos ctbcos1 ON COALESCE(commov.idctbcos1, comm.idctbcos1) = ctbcos1.id
             LEFT JOIN ctbcosr ctbcosr1 ON ctbcos1.codctbcosr = ctbcosr1.cod
             LEFT JOIN ctbcos ctbcos2 ON COALESCE(commov.idctbcos2, comm.idctbcos2) = ctbcos2.id
             LEFT JOIN ctbcosr ctbcosr2 ON ctbcos2.codctbcosr = ctbcosr2.cod) vmov ON c.id = vmov.idcomm
     LEFT JOIN cuboauxctbrubrosnombre r ON vmov.idctb = r.idctb
     LEFT JOIN com ON c.tipocom = com.tipo
     LEFT JOIN ambsuc ON c.codambsuc = ambsuc.cod;

ALTER TABLE public.cubobalancenuevo OWNER TO abacouser;



-- =====================================
SELECT aaversion('404.01');
-- =====================================
